// 请求user数据
import { AxiosResponse } from 'axios';
import request, { ResponseData } from '.';

/**
 * 注册返回数据接口
 */
interface ISignupResponseData {
    /**
     * 用户id
     */
    userId: number;
    /**
     * 用户token
     */
    userToken: string;
}

interface ILoginResponseData {
    /**
     * 用户id
     */
    userId: number;
    /**
     * 用户token
     */
    userToken: string;
}

interface ICheckUserNameResponseData {
    /**
     * 用户名是否存在
     */
    isExisted: boolean;
}

/**
 * 注册
 * @param username 用户名
 * @param password 密码
 */
export function signup(username: string, password: string): Promise<AxiosResponse<ResponseData<ISignupResponseData>>> {
    return request.get('/user/signup', {
        params: {
            username,
            password,
        },
    });
}

/**
 * 登录
 * @param username 用户名
 * @param password 密码
 */
export function login(username: string, password: string): Promise<AxiosResponse<ResponseData<ILoginResponseData>>> {
    return request.get('/user/login', {
        params: {
            username,
            password,
        },
    });
}

/**
 * 检查用户名是否存在
 * @param username 用户名
 * @returns 存在返回true，不存在返回false
 */
export function checkUsername(username: string): Promise<AxiosResponse<ResponseData<ICheckUserNameResponseData>>> {
    return request.get('/user/check-username', {
        params: {
            username,
        },
    });
}

/**
 * 修改用户名
 * @param userId 用户id
 * @param newUserName 新用户名
 */
export function changeUserName(userId: string, newUserName: string) {
    return request.get('/user/changeUserName', {
        params: {
            userId,
            newUserName,
        },
    });
}
